package juego;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

import principal.Constantes;

import niveles.Escenario;
import basicas.Posicion;

public abstract class Pared extends ObjetoDelJuego implements IDestruible {
	private int resistencia;
	
	public Pared(Posicion posicionInicial) {
		super(posicionInicial);			
	}
	
	public Pared(Node n) {
		super(n);	
		int resistencia = 0;				
		resistencia = (int) Float.parseFloat(n.getChildNodes().item(3).getTextContent());
		this.resistencia = resistencia;			
	}

	public void vivir() {

	}
	
	public int recibirDanio(int cantidad) {
		resistencia = resistencia - 1;
		if (resistencia <= 0) {
			return explotar();
		}
		return 0;
	}

	public int getResistencia() {
		return 0;
	}

	public int explotar() {		
		morir();
		if (Math.random() < Constantes.PROBABILIDAD_APARICION_BONUS) {						
			getNivel().agregarObjetoVivo(bonus(getPosicion()));
		}		
		getNivel().agregarObjetoVivo(new Explosion(getPosicion()));		
		return getPuntos();
	}
	
	public abstract Bonus bonus(Posicion posicion);
	
	public void setNivel(Escenario nivel) {
		super.setNivel(nivel);
	}

	@Override
	public abstract int getPuntos();
	
	public Element getElemento(Document doc) {		
		Element nuevoNodo;
		Element nodoHijo;
		
		nuevoNodo = super.getElemento(doc);
		
		nodoHijo = doc.createElement("resistencia");
		nuevoNodo.appendChild(nodoHijo);
		nodoHijo.setTextContent(String.valueOf(resistencia));		
		
		return nuevoNodo;
	}
	
	public void setResistencia(int cantidad) {
		resistencia = cantidad;
	}
}
